package com.ia.aistream.manager.framework.redis;

import java.util.Set;

/**
 * @author chenjunsheng
 */
public interface RedisSetManager {

    /**
     * 将一个或多个 member 元素加入到集合 key 当中，已经存在于集合的 member 元素将被忽略。
     *
     * @param key     假如 key 不存在，则创建一个只包含 member 元素作成员的集合。当 key 不是集合类型时，返回一个错误。
     * @param members 被添加到集合中的新元素
     */
    void sadd(String key, Object... members);

    /**
     * 判断 member 元素是否集合 key 的成员。
     *
     * @param key    key
     * @param member 集合的成员
     * @return
     */
    boolean smembers(String key, Object member);

    /**
     * 返回集合 key 中的所有成员。
     *
     * @param <T>   枚举
     * @param key   key
     * @return
     */
    <T> Set<T> smembers(String key);

    /**
     * 移除集合 key 中的一个或多个 member 元素，不存在的 member 元素会被忽略。
     *
     * @param key    key
     * @param member 元素
     */
    void srem(String key, Object member);

    /**
     * 返回集合 key 的基数(集合中元素的数量)。
     *
     * @param key key
     * @return 集合的基数。 当 key 不存在时，返回 0 。
     */
    long scard(String key);
}
